package modelo;

import static modelo.SetUps.RETARDO_CREACION;
import static modelo.SetUps.RETARDO_NEUTRALES;
import static modelo.SetUps.CANT_NIVELES;

import modelo.util.ContadorSimple;

public class CambioNivel {
	
	private int retardoCreacion;
	private int retardoNeutrales;
	private ContadorSimple cantNiveles;
	
	public CambioNivel (){
		retardoCreacion = RETARDO_CREACION;
		retardoNeutrales = RETARDO_NEUTRALES;
		cantNiveles = new ContadorSimple (CANT_NIVELES);
	}
	
	public void cambiarNivel (){
		if (cantNiveles.agotado()){
			throw new NivelesAgotadosException();
		}
		double factor = (2*CANT_NIVELES-1)/ (double)(CANT_NIVELES*2);
		retardoCreacion =  (int)(retardoCreacion * factor);
		retardoNeutrales = (int) (retardoNeutrales * factor);
		cantNiveles.descontar();
	}
	
	public boolean nivelesAgotados (){
		return cantNiveles.agotado();
	}
	
	public int getRetardoCreacion (){
		return  retardoCreacion;
	}
	
	public int getRetardoNeutrales (){
		return retardoNeutrales;
	}
	
	public int getNumeroNivel(){
		return (CANT_NIVELES - cantNiveles.getValor() + 1);
	}
}
